Skip to content

Add dotnetup Version Intent & Timeline Doc#55390

Open
nagilson wants to merge 16 commits into
dotnet:release/dnupfrom
nagilson:nagilson-dotnetup-support-policy
Open

Add dotnetup Version Intent & Timeline Doc#55390
nagilson wants to merge 16 commits into
dotnet:release/dnupfrom
nagilson:nagilson-dotnetup-support-policy

Conversation

@nagilson

@nagilson nagilson commented Jul 20, 2026

Copy link
Copy Markdown
Member

This document is meant to initiate conversations.

When polished, the document's function is to inform developers & customers using dotnetup what the intent will be of each dotnetup version, and the level of support it will receive (in terms of breaking change notices, bug fixes, and security updates.)

It is not an official support policy document. Such a document would be owned and persist on the https://dotnet.microsoft.com/en-us/platform/support/policy policy page. It contains my words which cannot and should not be defined as an official statement from Microsoft.

Please see #54735 for more details about specific release plans and a release strategy.

This is very much a draft and includes my own perspectives, it will evolve and mature before it is committed. Do not consume it as official `dotnet` policy at this time.

The primary intent for this document is to start conversations about the official support policy, and then to create clarity around support and the potential for breaking changes amongst our customers who have started to try-out `dotnetup` off our internal `ci` branches.

Please see dotnet#54735 for more details about specific release plans and a release strategy.

We have not yet consulted with the release team on this particular doc.
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).
1 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

Comment thread documentation/general/dotnetup/dotnetup-support-policy.md Outdated
@nagilson
nagilson requested a review from a team July 21, 2026 17:34
nagilson added 3 commits July 21, 2026 10:52
…g doc

We don't actually own those decisions on support policies and can't make them. The true intent here is to outline what the intent of each version is for us as developers (understanding when we can make a breaking change and when to document it) + communicate that outward.
@nagilson nagilson changed the title Add prototype dotnetup support policy doc Add dotnetup Version Intent Doc Jul 22, 2026
@nagilson nagilson changed the title Add dotnetup Version Intent Doc Add dotnetup Version Intent & Timeline Doc Jul 22, 2026
@nagilson
nagilson marked this pull request as ready for review July 22, 2026 21:32
Copilot AI review requested due to automatic review settings July 22, 2026 21:32
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).
1 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new internal-facing documentation page under documentation/general/dotnetup/ to describe the intent and (non-official) support expectations for dotnetup build qualities/channels, to help developers/customers choose between daily, preview, and stable.

Changes:

  • Introduces a dotnetup version/channel intent + support-lifecycle overview document.
  • Documents intended platform/shell support scope and servicing expectations.
  • Adds an FAQ note on how to install stable once available via get-dotnetup scripts.

Comment thread documentation/general/dotnetup/dotnetup-support-policy.md Outdated
Comment thread documentation/general/dotnetup/dotnetup-support-policy.md Outdated
Comment thread documentation/general/dotnetup/dotnetup-support-policy.md Outdated
Comment thread documentation/general/dotnetup/dotnetup-support-policy.md Outdated
nagilson and others added 2 commits July 22, 2026 14:36
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…ixes

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@@ -0,0 +1,96 @@
# `dotnetup` `daily`, `preview`, and `stable` Version Definitions

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The document is still titled dotnetup-support-policy, consider renaming it.

Comment on lines +8 to +9
Looking for the support policy for the .NET Platform? See the [.NET Support Policy](https://dotnet.microsoft.com/platform/support/policy) page.
`dotnetup`'s official support policy document is still underway; here, we aim to communicate version intent to allow users to pick which version of `dotnetup` to use.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Support" is an overloaded term, but in terms of the "support policy", what it means (according to copilot) is that Microsoft ships fixes and provides technical assistance for the product.

I think maybe we can drop this whole section (the reference to "support") from this document. I'm not sure though.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I'd like to leave one sentence mentioning this is NOT a support policy document, and to instead look elsewhere for clarity, but this can probably be cut down and seem less formalized, so it doesn't give the wrong impression

Comment thread documentation/general/dotnetup/dotnetup-support-policy.md Outdated
Comment on lines +23 to +27
### Supported Platforms and Shells

The latest `stable` version of `dotnetup` is supported on Windows, macOS, and Linux versions supported by its embedded .NET Runtime. See the [.NET supported operating system policy](https://github.com/dotnet/core/blob/main/os-lifecycle-policy.md) for the applicable operating system lifecycle rules.

Shell integration, including profile modification and environment-script generation, is supported for Bash (`bash`), Z shell (`zsh`), fish (`fish`), and Windows PowerShell (`powershell`) alongside PowerShell Core (`pwsh`). Other shells are not yet supported for shell integration.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure we need this section at all in a document describing our different release channels. To me it seems unnecessary to list the OS's and shells that are supported (in this document). It also introduces the "supported" term in a slightly different sense, in that the software "supports" (ie works with) a given OS or shell rather than that Microsoft "supports" (ie provides fixes and technical assistance for) the software.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is helpful to communicate so we have 1 place to tell customers what we do and don't support, either for OS or for Shells. It's not a given to folks outside our area of influence know that dotnetup is even a cross platform product (imo). Also makes it clear we don't support any distro that the runtime does not support.


The `daily` `dotnetup` builds will use themselves to build. This allows us to catch problems early by dogfooding our own product.

Multiple `daily` builds may be published in one day. Only the most recent `daily` build is intended for dogfooding; older `daily` builds are not maintained.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The second sentence here could possibly be deleted.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see where you're coming from, whether this doc is the right place for this sentence is interesting. The intent here was the communicate that we shouldn't rely on the daily channel in daily CI because that would block other daily builds from fixing the daily build. I think we could leave it but I don't feel strongly.

Comment on lines +65 to +66
`stable` builds will be built off of `stable` .NET Runtimes.
The first runtime supporting a `stable` build will be `.NET 11`.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is an interesting issue. If we're using a single branch, then once we go stable we can never build against a preview version of the .NET Runtime. Maybe that's a reason to consider multiple branches. I think this warrants more thought and team discussion.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree. This could be quite bad considering we needed .NET 11 SDK source code changes to make dotnetup work. Honestly, maybe I'm ok with trusting the preview runtime versions here in the stable version of dotnetup if it doesn't mean we're locked into essentially an 11 month time window where we cant use newer .net features or we need to service multiple branches.

`stable` builds will be built off of `stable` .NET Runtimes.
The first runtime supporting a `stable` build will be `.NET 11`.

`stable` versions of `dotnetup` follow the [.NET Runtime servicing policy](https://dotnet.microsoft.com/platform/support/policy/dotnet-core#servicing). When a .NET Runtime servicing release updates the runtime embedded in `dotnetup`, the corresponding `dotnetup` release may be published up to three days later. The current `stable` version of `dotnetup` remains supported during this publication window.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is another interesting issue for discussion. I'm not sure we should put this policy in this document. I wonder if we will want to do internal builds of dotnetup ahead of each servicing release so that we can release dotnetup together with the runtime updates.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, 3 days is arbitrary. We have the power to coordinate with the runtime team though I imagine most CVEs won't really affect dotnetup. It's costly to check whether each one does because there are so many CVEs so we might as well just match the ship schedule.

Comment on lines +70 to +80
#### Major `stable` Release

Major releases may include new features and functionality, new public APIs, bug fixes, and intentional [breaking changes](https://learn.microsoft.com/dotnet/core/compatibility/breaking-changes).

#### Minor `stable` Release

Minor releases may include new features, functionality, APIs, or bug fixes, but their scope will be generally smaller than that of major releases.

#### Patches & Servicing

Patch versions may include security fixes, bug fixes, and updates to the self-contained .NET Runtime embedded in the executable. A patch version is not intended to introduce new features. A patch update to the embedded runtime causes a patch update to `dotnetup`.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As mentioned above, I'd consider dropping or cutting down this section. I'm not too sure though.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this section is important for external communication, though it's basically a redefinition of semver with some wiggle room


Patch versions may include security fixes, bug fixes, and updates to the self-contained .NET Runtime embedded in the executable. A patch version is not intended to introduce new features. A patch update to the embedded runtime causes a patch update to `dotnetup`.

#### End of support

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure we need to cover the end of support in this document.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought about this too, though I think it's ideal to have a written down plan.


**How can I update to the latest `dotnetup` version?**

Once `stable` releases are available, follow the [download instructions](README.md#download-dotnetup) and select the `stable` build quality. Pass `--quality stable` to `get-dotnetup.sh` or `-Quality stable` to `get-dotnetup.ps1`. Running either script without this option currently installs a `daily` build, which is available today but not supported.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We haven't implemented this yet, have we? I'm not sure we need to include this in the document especially when it's not yet implemented. By the time we go stable, we probably want dotnetup to be able to update itself.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok to remove this! And agreed.

Co-authored-by: Daniel Plaisted <dsplaisted@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants